#ifndef HOUGHFRAME_H
#define HOUGHFRAME_H

/**
 * \file HoughFrame.h
 * \brief Fichier contenant la déclaration de la classe HoughFrame.
 */

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include "Point.h"

using namespace std;


class HoughFrame
{
	/* \class Hough
	 * \brief Cette classe représente une case de l'espace de Hough.
	 */
	private :

	int score;				/*!<score de cette case de l'espace de Hough*/
	Point bot;				/*!<Coin inferieur gauche d'une case de l'espace de Hough*/
	Point top;				/*!<Coin supérieur droit d'une case de l'espace de Hough*/
	
	public :
	
	/*!
	 *  \brief Constructeur de la classe HoughFrame
	 *
	 *  Constructeur de la classe HoughFrame
	 */
	HoughFrame();
	
	/*!
	 *  \brief Constructeur de la classe HoughFrame
	 *
	 *  Constructeur de la classe HoughFrame
	 *
	 *  \param _bot : Coin inferieur gauche définissant la case.
	 *  \param _top : Coin superieur droit définissant la case.
	 */
	HoughFrame(Point _bot, Point _top);

	/*!
	 *  \brief Constructeur de la classe HoughFrame
	 *
	 *  Constructeur de la classe HoughFrame
	 *
	 *  \param _bot : Coin inferieur gauche définissant la case.
	 *  \param _top : Coin superieur droit définissant la case.
	 *	\param _score : Score de la case.
	 */
	HoughFrame(Point _bot, Point _top, int _score);
	
	/*!
     *  \brief Renvoie le point inferieur gauche de la case.
	 *
     *  Renvoie le point inferieur gauche de la case.
	 *
	 *  \return : Renvoie le point inferieur gauche de la case.
     */
	Point getBotPoint ();
	
	/*!
     *  \brief Renvoie le point superieur droit de la case.
	 *
     *  Renvoie le point superieur droit de la case.
	 *
	 *  \return : Renvoie le point superieur droit de la case.
     */
	Point getTopPoint ();
	
	/*!
     *  \brief Modificateur de la classe HoughFrame
	 *
     *  Modificateur de la classe HoughFrame
	 *
	 *  \param _p : Le point _p sera affecté à l'attribut bot de l'objet.
	 *  \return : void
     */
	void setPointBot ( Point _p );
	
	/*!
     *  \brief Modificateur de la classe HoughFrame
	 *
     *  Modificateur de la classe HoughFrame
	 *
	 *  \param _p : Le point _p sera affecté à l'attribut top de l'objet.
	 *  \return : void
     */
	void setPointTop ( Point _p );
	
	/*!
     *  \brief Accesseur de la classe HoughFrame
	 *
     *  Renvoie le score de la case de l'espace de Hough.
	 *
	 *  \return : Score de la case
     */
	int getScore();
	
	/*!
     *  \brief Modificateur de la classe HoughFrame.
	 *
     *  Attribue un score a la case de Hough
	 *
	 *  \param _score : score à affecter à la case de l'espace de Hough.
	 *
	 *  \return : void
     */
	void setScore( int _score );
	
	/*!
     *  \brief Modificateur de la classe HoughFrame
	 *
     *  Incrémente le score de la case de Hough.
	 *
	 *  \return : void
     */
	void incrementScore ();

	/*!
     *  \brief Modificateur de la classe HoughFrame
	 *
     *  Incrémente plusieurs fois le score de la case de Hough.
	 *
	 *  \return : void
     */
	void incrementScore (int _val);
};

#endif
